/*

通俗理解：泛型就是解决 类 接口 方法的复用性、以及对不特定数据类型的支持(类型校验)
*/

T getData<T>(T value) {
  return value;
}

// class MyList {
//   List list = <int>[];
//   void add(int value) {
//     this.list.add(value);
//   }

//   List getList() {
//     return list;
//   }
// }

// class MyList<T> {
//   List list = <T>[];
//   void add(T value) {
//     this.list.add(value);
//   }

//   List getList() {
//     return list;
//   }
// }

class MyList {
  List list = [];
  void add<T>(value) {
    this.list.add(value);
  }

  List getList() {
    return list;
  }
}

void main() {
  print(getData<String>('这是一个指定的泛型'));

  // 泛型方法的写法
  List list = new List<String>.filled(2, '');
  list[0] = '小鹏';
  list[1] = '大鹏';
  print(list);

  List list2 = new List<int>.filled(2, 0);
  list2[0] = 70;
  list2[1] = 24;
  print(list2);

  // MyList l = new MyList();
  // MyList l = MyList<String>();
  MyList l = MyList();
  l.add<String>('我的学号是');
  l.add<int>(13);
  l.add<bool>(true);
  print(l.getList());
}
